local t = Def.ActorFrame {};
	
	-- LifeMeterBar
	for i, pn in pairs(PlayerNumber) do
		if ShowStandardDecoration("LifeMeterBar" ..  ToEnumShortString(pn)) then
			local life_type = GAMESTATE:GetPlayerState(pn):GetPlayerOptions("ModsLevel_Song"):LifeSetting()
			t[#t+1] = LoadActor(THEME:GetPathG(Var "LoadingScreen", "lifebar_" .. ToEnumShortString(life_type)), pn) .. {
				InitCommand=function(self)
					self:name("LifeMeterBar" .. ToEnumShortString(pn))
					ActorUtil.LoadAllCommandsAndSetXY(self,Var "LoadingScreen")
				end
			}
		end
	end
	
	--P1
	t[#t+1] = LoadActor(THEME:GetPathG("_lifemeter", "over")) .. {
		InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1);zoom,0.5;x,THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX");y,SCREEN_TOP-40);
		OnCommand=cmd(sleep,0.4;decelerate,0.3;addy,73);
		OffCommand=cmd(sleep,0.6;decelerate,0.5;addy,-73);
	};
	--P2
	t[#t+1] = LoadActor(THEME:GetPathG("_lifemeter", "over")) .. {
		InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2);zoom,0.5;x,THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX");y,SCREEN_TOP-40);
		OnCommand=cmd(sleep,0.4;decelerate,0.3;addy,73);
		OffCommand=cmd(sleep,0.6;decelerate,0.5;addy,-73);
	};
	
t[#t+1] = Def.ActorFrame {
	InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_1));
	LoadFont("StepsDisplay description") .. { 
          InitCommand=cmd(x,Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX")+64;y,SCREEN_TOP-41;draworder,101;horizalign,left;);
		  OnCommand=cmd(playcommand,"Set";sleep,0.4;zoom,0.5;decelerate,0.3;y,SCREEN_TOP+48;sleep,3;);
          CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set";); 
		  TransitionCommand=cmd(finishtweening;diffusealpha,0;addy,-3;smooth,0.2;diffusealpha,1;addy,3;);
		  PlayerJoinedMessageCommand=cmd(playcommand,"Set";diffusealpha,0;smooth,0.3;diffusealpha,1;);
          ChangedLanguageDisplayMessageCommand=cmd(playcommand,"Set"); 
		  OffCommand=cmd(sleep,0.6;decelerate,0.5;addy,-73;);
          SetCommand=function(self)
			stepsP1 = GAMESTATE:GetCurrentSteps(PLAYER_1)
			local song = GAMESTATE:GetCurrentSong();
			if song then 
				if stepsP1 ~= nil then
					local st = stepsP1:GetStepsType();
					local diff = stepsP1:GetDifficulty();
					local cd = GetCustomDifficulty(st, diff);
					self:settext(stepsP1:GetMeter())
					self:diffuse(color("#ECFAFD")):diffusealpha(0.7);
				else
					self:settext("")
				end
			else
				self:settext("")
			end
          end	
	};

	LoadFont("StepsDisplay description") .. { 
          InitCommand=cmd(x,Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP1OnePlayerOneSideX")-65;y,SCREEN_TOP-41;draworder,101;horizalign,left;);
		  OnCommand=cmd(playcommand,"Set";sleep,0.4;zoom,0.5;decelerate,0.3;y,SCREEN_TOP+48;sleep,3;);
          CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set";); 
		  TransitionCommand=cmd(finishtweening;diffusealpha,0;addy,-3;smooth,0.2;diffusealpha,1;addy,3;);
		  OffCommand=cmd(sleep,0.6;decelerate,0.5;addy,-73;);
		  PlayerJoinedMessageCommand=cmd(playcommand,"Set";diffusealpha,0;smooth,0.3;diffusealpha,1;);
          ChangedLanguageDisplayMessageCommand=cmd(playcommand,"Set"); 
          SetCommand=function(self)
			stepsP1 = GAMESTATE:GetCurrentSteps(PLAYER_1)
			local song = GAMESTATE:GetCurrentSong();
			if song then 
				if stepsP1 ~= nil then
					local st = stepsP1:GetStepsType();
					local diff = stepsP1:GetDifficulty();
					local cd = GetCustomDifficulty(st, diff);
					self:settext(string.upper(THEME:GetString("CustomDifficulty",ToEnumShortString(diff))));
					self:diffuse(ColorLightTone(CustomDifficultyToColor(cd)));
				else
					self:settext("")
				end
			else
				self:settext("")
			end
          end
	};
	};
	
	t[#t+1] = Def.ActorFrame {
	InitCommand=cmd(visible,GAMESTATE:IsHumanPlayer(PLAYER_2));
	LoadFont("StepsDisplay description") .. { 
          InitCommand=cmd(x,Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX")+64;y,SCREEN_TOP-41;draworder,101;horizalign,left;);
		  OnCommand=cmd(playcommand,"Set";sleep,0.4;zoom,0.5;decelerate,0.3;y,SCREEN_TOP+48;sleep,3;);
          CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set";); 
		  TransitionCommand=cmd(finishtweening;diffusealpha,0;addy,-3;smooth,0.2;diffusealpha,1;addy,3;);
		  PlayerJoinedMessageCommand=cmd(playcommand,"Set";diffusealpha,0;smooth,0.3;diffusealpha,1;);
          ChangedLanguageDisplayMessageCommand=cmd(playcommand,"Set"); 
		  OffCommand=cmd(sleep,0.6;decelerate,0.5;addy,-73;);
          SetCommand=function(self)
			stepsP3 = GAMESTATE:GetCurrentSteps(PLAYER_2)
			local song = GAMESTATE:GetCurrentSong();
			if song then 
				if stepsP2 ~= nil then
					local st = stepsP2:GetStepsType();
					local diff = stepsP2:GetDifficulty();
					local cd = GetCustomDifficulty(st, diff);
					self:settext(stepsP2:GetMeter())
					self:diffuse(color("#ECFAFD")):diffusealpha(0.7);
				else
					self:settext("")
				end
			else
				self:settext("")
			end
          end	
	};

	LoadFont("StepsDisplay description") .. { 
          InitCommand=cmd(x,Center1Player() and SCREEN_CENTER_X or THEME:GetMetric(Var "LoadingScreen","PlayerP2OnePlayerOneSideX")-65;y,SCREEN_TOP-41;draworder,101;horizalign,left;);
		  OnCommand=cmd(playcommand,"Set";sleep,0.4;zoom,0.5;decelerate,0.3;y,SCREEN_TOP+48;sleep,3;);
          CurrentStepsP1ChangedMessageCommand=cmd(playcommand,"Set";); 
		  TransitionCommand=cmd(finishtweening;diffusealpha,0;addy,-3;smooth,0.2;diffusealpha,1;addy,3;);
		  OffCommand=cmd(sleep,0.6;decelerate,0.5;addy,-73;);
		  PlayerJoinedMessageCommand=cmd(playcommand,"Set";diffusealpha,0;smooth,0.3;diffusealpha,1;);
          ChangedLanguageDisplayMessageCommand=cmd(playcommand,"Set"); 
          SetCommand=function(self)
			stepsP2 = GAMESTATE:GetCurrentSteps(PLAYER_2)
			local song = GAMESTATE:GetCurrentSong();
			if song then 
				if stepsP2 ~= nil then
					local st = stepsP2:GetStepsType();
					local diff = stepsP2:GetDifficulty();
					local cd = GetCustomDifficulty(st, diff);
					self:settext(THEME:GetString("CustomDifficulty",ToEnumShortString(diff)));
					self:diffuse(ColorLightTone(CustomDifficultyToColor(cd)));
					else
					self:settext("")
				end
			else
				self:settext("")
			end
          end
	};
	};
	
-- Song info 

	t[#t+1] = Def.ActorFrame {
	InitCommand=cmd(y,SCREEN_BOTTOM+70;x,SCREEN_CENTER_X;);
	OnCommand=cmd(sleep,0.4;decelerate,0.3;addy,-95;);
	OffCommand=cmd(sleep,0.6;decelerate,0.7;y,SCREEN_BOTTOM+30);
		LoadActor(THEME:GetPathG("_song", "frame")) .. {
		};
		LoadFont("Common normal") .. {
			  InitCommand=cmd(zoom,0.5;addy,-8;maxwidth,350;);
			  CurrentSongChangedMessageCommand=cmd(finishtweening;playcommand,"Set");
			  CurrentCourseChangedMessageCommand=cmd(finishtweening;playcommand,"Set");
			  ChangedLanguageDisplayMessageCommand=cmd(finishtweening;playcommand,"Set");
			  SetCommand=function(self)
				   local song = GAMESTATE:GetCurrentSong();
				   if song then
						self:settext(song:GetDisplayFullTitle());
						self:playcommand("Refresh");
					else
						self:settext("");
						self:playcommand("Refresh");
				   end
			  end;
		};
		LoadFont("Common normal") .. {
			  InitCommand=cmd(zoom,0.4;addy,6;maxwidth,400;);
			  CurrentSongChangedMessageCommand=cmd(finishtweening;playcommand,"Set");
			  CurrentCourseChangedMessageCommand=cmd(finishtweening;playcommand,"Set");
			  ChangedLanguageDisplayMessageCommand=cmd(finishtweening;playcommand,"Set");
			  SetCommand=function(self)
				   local song = GAMESTATE:GetCurrentSong();
				   if song then
						self:settext(song:GetDisplayArtist());
						self:playcommand("Refresh");
					else
						self:settext("");
						self:playcommand("Refresh");
				   end
			  end;
		};
	};
	
return t